# -*- tcl -*-
# -------------------------------------------------------------------------
# iassoc.test
##
# -------------------------------------------------------------------------

source [file join [file dirname [info script]] support testutilities.tcl]

testsNeedTcl     8.4
testsNeedTcltest 2

support {
    useLocal lib/lassign84/lassign.tcl  lassign84
    useLocal lib/dict84/dict.tcl        dict84

    useLocal lib/stubs_container/container.tcl stubs::container
    useLocal lib/stubs_reader/reader.tcl       stubs::reader
    useLocal lib/stubs_genframe/genframe.tcl   stubs::gen
    useLocal lib/critcl/critcl.tcl            critcl

    localcache-setup
}
testing {
    useLocal lib/critcl-iassoc/iassoc.tcl     critcl::iassoc
}

# -------------------------------------------------------------------------
##

test iassoc-counter-1.0 {critcl::iassoc - per-interp counter} -setup {
    make-demo TL {
        critcl::iassoc::def icounter {int base} {
            int counter; /* The counter variable */
        } {
            data->counter = base;
        } {
            /* Nothing to release */
        }
        critcl::cproc icounter {Tcl_Interp* interp int base} int {
            icounter_data d = icounter (interp, base);
            d->counter ++;
            return d->counter;
        }
    }
} -body {
    res!
    res+ [icounter 4]
    res+ [icounter 0]
    res+ [icounter -1]
    res?
} -result {5 6 7}

# -------------------------------------------------------------------------
testsuiteCleanup

# Local variables:
# mode: tcl
# indent-tabs-mode: nil
# End:
